package creational.singleton;

public class InnerClassSingleton {

    private InnerClassSingleton() {

    }

    public static InnerClassSingleton getInstance() {
        return InnerClassStatic.singleton;
    }


    /**
     * 一个类的内部类，如果没有 static 修饰，那么他被称为对象级内部类，他的实例的构造方式
     * 需要外部类的实例
     */
    public class InnerClass {
    }

    /**
     * 一个类的内部类，若使用了 static 修饰，那么被称为类级内部类，他不依赖外部类的实例即可构造，
     * 可以将它看做一个静态成员，只有在第一次被使用的时候才被会装载。
     */
    public static class InnerClassStatic {
        private static InnerClassSingleton singleton = new InnerClassSingleton();
    }

}
